![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam chciałem spytać mądrzejszych od siebie o poniższe.
Otóż tak. Mam foldery, w tym mod/login , mod/news itd jeżeli chodzi o moduły.
Czy taka struktura jest odpowiednia gdzie w MODUŁACH jest MVC i tam też znajduje się css, html dla danego modułu. Problem jak załadować vidok... Czy utworzyć do tego helpera w LIBS view_mod.php czy też modyfikować klasę view? Potrzebne mi to do pracy na uczelnii. Ten post edytował KotWButach 15.08.2012, 01:25:28 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
Całość nei jest zgodna z konwencją nazewnictwa PSR-0, więc nie powiedziałbym, że struktura jest odpowiednia.
Generalnie nic więcej powiedzieć nie mogę, po samej strukturze mało co się można dowiedzieć. I nie "vidok" tylko "widok" (i uprzedzę - "classa"=>"klasa", "controllera"=>"kontrolera"). |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Tak w modułach możesz dać na nowo całe mvc, tak robi np. yii framework.
Co robi Bootstrap.php w libs? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Bootstrap to klasa wywoływana jest oczywiście w index.
------------------------------------------------------------------------ Witam szukam o PSR-0 ale żadnych przykładów jest tylko opis który jest niejasny (IMG:style_emoticons/default/sad.gif) czy ktoś mógł by podać jakieś linki do przykładowych implementacji PSR? Ten post edytował KotWButach 15.08.2012, 21:13:02 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Przecież dwa pierwsze linki w Google po wpisaniu PSR-0 dają kompletną odpowiedź.
2. MVC to tylko wzorzec architektoniczny, nie mający nic wspólnego ze strukturą katalogów, nazwą klasy czy innymi nieistotnymi bzdetami. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Czytałem ba nawet wczytywałem się po 10 razy w ANG i PL tekst i nie ogarniam tego w praktycznym zastosowaniu a bardzo bym chciał skoro jest to już standard a co dopiero mówić o psr1 czy 2.
To może sformułuje pytanie nieco inaczej jako że wciąz nie rozumiem związku struktury katalogów i PSR-0. Jak powinna wyglądać struktura katalogów uwzględniając folder plugins (artykuły, logowanie, mail, statystyki itd...) model mvc oraz strefe publiczną. Zastanawiam się też co powinno znajdować się w katalogu SYSTEM jeżeli takowy istnieje oraz APP jeżeli takowy istnieje a jeżeli istnieją oba? Mam nadzieję że teraz zadałem bardziej właściwe pytania i pomożecie mi rozwiać moje wątpliwości. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Hmm zaczytałem się w pewnym angielskim artykule i wywnioskowałem z niego że PSR-0 ma swoje odzwierciedlenie w katalogach przez pryzmat przestrzeni nazw i o to chodziło zapewne "pamilowi" a wiec jeżeli mamy katalogi i przestrzenie nazw takie jak poniżej to znaczy że spelniam ten standard? Nie wiem jednak gdzie umieścic model i kontroler by było to czytelnie intuicyjnie i jak nazwać te foldery.
-------------------------------- co sądzicie o tym co on mówi robi? http://www.youtube.com/watch?v=GBuJXovvdWE...nel&list=UL głownie part 2 czy to tak ma wygladać? Dodam że zrobiłem coś takiego i nie wiem czy tak jest poprawnie bo pierwszy raz w tym stylu cokolwiek piszę.
Problem pojawił się gdy zabrakło podpowiedzi dla metod tak jak by netbeans nie wiedział już o co chodzi... AUTOLOADER - https://raw.github.com/gist/221634/2bc31f04...ClassLoader.php przerobiony na statyczny Ten post edytował KotWButach 16.08.2012, 18:36:39 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
W PHP5.3 mamy coś takiego jak słowa kluczowe "namespace" oraz "use" - kod, który tu pokazałeś jest straszny.
Ja osobiście radziłbym zapoznać się z działającym już frameworkiem - polecam Symfony2, pisane dla >=PHP5.3. Zobaczysz, jak coś działa od środka oraz od strony użytkowej - zapoznasz się z dobrymi wzorcami. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Nie potrafię sobie wyobrazić czego nie można zrozumieć w opisie standardu PSR-0.
2. Jest jakiś konkretny powód dla którego chcesz brać się za tworzenie kolejnego "frameworka" zamiast skorzystać z istniejącego? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1. Nie potrafię sobie wyobrazić czego nie można zrozumieć w opisie standardu PSR-0. Hmm napisałem jak ja to pojmuje i prosiłbym choć o wyjaśnienie czy rozumiem to porwanie a jeżeli nie to co jest nie tak? Jeżeli możesz podeślij wideotutorial z youtuba lub wytłumacz mi jak to ma się do tego co napisałem. Cytat 2. Jest jakiś konkretny powód dla którego chcesz brać się za tworzenie kolejnego "frameworka" zamiast skorzystać z istniejącego? Studia pamil - boje się ze symfony jest dla mnie zbyt trudny a codeigniter nie posiada zbytnio nic poza kilkoma klasami, co jest jego zaletą w nauce i przeszkodą w standardach. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
Na CodeIgnitera to ty nawet nie patrz - niby pisany na nowo, a w środku archaiczny kod z PHP4 rodem. Symfony2 nei jest trudny - właśnie się go uczę, po kilku dniach (nie korzystałem wcześniej z żadnego FW) potrafiłem zrobić przyjemnie w nim dużo rzeczy (IMG:style_emoticons/default/wink.gif) Dokumentacja oraz pomoc społeczności jest naprawdę wystarczająca, nie miałem problemu "prawie-nie-do-rozwiązania". Jeśli masz tydzień-dwa czasu, polecam wykonać przykładowy projekt w Symfony2, możesz się też inspirować Trinity Zyxa - co prawda to eksperymentalny framework, praktycznie bez żadnej dokumentacji i społeczności, ale ciekawe ze względu na prawdziwe MVC.
Co do PSR-0: Mamy klasę Dostawca\Przestrzen\Nazw\NieskonczonaIlosc\Nazwa_Klasy.php Definiujemy w autoloaderze, że przestrzeń nazw Dostawca znajduje się w ../lib/Dostawca/. Teraz gdy autoloader chce załadować tą klasę, znajdzie ją w ../lib/Dostawca/Przestrzen/Nazw/NieskonczonaIlosc/Nazwa/Klasy.php. Prawda że proste? Można bez kolizji tworzyć we własnej przestrzeni nazw dostawcy, i wiadomo, gdzie dana klasa/interfejs etc. się znajduje. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
czyli to co napisałem jak brzydki kod by nie był jest poprawnie w myśl tego standardu?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
Nie, twój kod nie ma sesnu. Do operowania na przestrzeniach nazw mamy "namespace" oraz "use".
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
No to teraz już nic nie rozumiem...
użyłem do ładowania plików i klass autoloadera o nazwie SplClassLoader który to ładuje tylko za pomocą przestrzeni nazw nie ma innej drogi dla tego autoloadera. więc plik w katalogu GŁOWNY\COSTAM\COS.PHP ma namespace COSTAM\COS bo GŁOWNY jest wspiany jako głowny katalog dla autoloadera. Ten post edytował KotWButach 17.08.2012, 13:54:51 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
Chodzi mi o to i używanie class_alias(). |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
czyli według standardu nie powinno używać się class_alias() tylko wypisywać pełne przestrzenie tj wywołanie
a co w przypadku gdy zmieni się nazwa folderu X wywołań będzie błędne? PS: mógłbyś pisać w calości skróty myślowe nie pomagają zbytnio a bardzo staram się to zrozumieć. I gdybyś był skłonny napisać jak powinno to wyglądać. ---------------------------------- Troche sie pobawiłem czy tak wyglada już dobrze?
I bardzo ważna kwestia czy naprawdę jeżeli używa się przestrzeni nazw by utworzyć obiekt jestem skazany na namespace typu aaa\bbb\ccc\ddd\obiekt itp monstra? mam się do tego przyzwyczaić czy to znów nie poprawne jest? Ten post edytował KotWButach 17.08.2012, 20:03:25 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 15 Dołączył: 12.08.2012 Skąd: Zabrze Ostrzeżenie: (10%) ![]() ![]() |
Tutaj chciałem dać przykład w kodzie, ale jednak nici z tego, także zpoadam kilka linków:
http://docs.php.net/manual/en/language.namespaces.php http://phpmaster.com/php-namespaces/ http://ttomczyk.pl/archives/182 Co, gdy nazwa folderu się zmieni? Nie będzie działać, i dobrze (IMG:style_emoticons/default/smile.gif) Większość IDE ma opcję refaktoringu, która podmieni ci wszystkie wywołania. Co do kodu: Włącz używanie E_NOTICE. To jest normalny błąd, nie jakieśtam powiadomienie. Prawidłowo napisany kod nie zwraca żadnego błędu typu E_NOTICE. Uwierz mi, pomyłka w nazwie zmiennej/indeksie tablicy może kosztować sporo nerwów, gdy nie wiesz, że właśnie ją popełniłeś (IMG:style_emoticons/default/wink.gif) Dalej, odnośnei formy to nic nei ma w nim do oceny, ale styl trochę zawikłany. Raz inicjalizujesz obiekt z nawiasami obok, raz bez. Raz zmienna z dużej litery się zaczyna - raz z małej. Raz używasz takichFunkcji() - a raz takich_funkcji(). Ostatnie pytanie: Oczywiście, że nie. W podanych wyżej linkach wytłumaczone jest słowo kluczowe use. Ja nadal polecam popracować z Symfony2, nauczyć się dobrych praktyk. Dodatek: Do czego przydatna jest konwencja nazewnictwa PSR-0? Polecam całą serię (1-12), prosto od głównego autora Symfony2 Composer |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Z tym E_NOTICE mam taki problem że nieco zaciemnia mi kod. Ale może i to mi jakoś wyjaśnisz do tej pory miałem np tak.
teraz na nowym xampp mam błąd NOTICE i musze robić tak
co z kolei powoduje takie smieszne cos.
wiem ze w jezykach innych niz php to koniecznosc ale php to php (IMG:style_emoticons/default/biggrin.gif) Czy możesz i to uściślić? Czytałem i czytam dalej to co podałeś relacja z tego wydarzenia nieco później bo już spać trzeba ;P Ten post edytował KotWButach 18.08.2012, 05:18:41 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie musisz stosować isset w takim przypadku wystarczy zainicjować zmienną tak jak zrobiłeś to w pierwszym kodzie. PHP dąży do tego co jest standardem w innych językach gdzie zmienne muszą być deklarowane ułatwia to analizę kodu źródłowego.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie musisz stosować isset w takim przypadku wystarczy zainicjować zmienną tak jak zrobiłeś to w pierwszym kodzie. PHP dąży do tego co jest standardem w innych językach gdzie zmienne muszą być deklarowane ułatwia to analizę kodu źródłowego. Dobrze wiedzieć (IMG:style_emoticons/default/smile.gif) że PHP sie rozwija a nie zwija (IMG:style_emoticons/default/smile.gif) Co do isset(); czasem trzeba jeżeli zmienna pochodzi z innego pliku. to albo isset albo przypisanie do innej.
ale nei wiem czy to cos da bo skoro się nie widzą przez jakiś czas to hmm musze przetestować. ----------------- Pojawił się problem otóż nie wiem jak sprawdzić w przestrzeniach nazw czy kalsa istnieje.
Pomoże ktoś? |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:54 |